nothreshold.m
Calculates the equilibrium continuation values for a parameterization of the Markov chain that does not generate a threshold rule. LaTeX/TikZ uses the results to create Figure 3 of Abbring and Campbell's ``Last-In First-Out Oligopoly Dynamics.''
Contents
- Set up the problem's parameters.
- Call bellman.m
- Calculate the entry and exit thresholds for the second competitor
- Calculate the entry set for the first competitor and its ``hole''
- Export v1 and v2 to csv files for LaTeX plotting
- Export other equilibrium calculations to LaTeX macros for use by TikZ when creating Figure 3.
Set up the problem's parameters.
For this specification, the Markov chain does not approximate an AR(1) with a continuous distribution, so we override the usual call to markov.m by defining Pi before calling bellman.m
%Parameters describing profits and discounting. k=2; bellmanARG.piF = @(x) k.*(x<=k); bellmanARG.kappa=1.0; bellmanARG.beta=1.05^(-1); %5 percent annual interest rate. bellmanARG.phi= @(N) 10; bellmanARG.markovARG=0; %Dummy value so that bellman.m doesn't choke. %Parameters describing the Markov chain %Support of C omega=-1.5:0.001:1.5; nCstates=length(omega); %Markov transition matrix Pi=eye(length(omega)); for i=301:1:length(omega)-300 Pi(i,i)=0.5; Pi(i,i-300)=0.25; Pi(i,i+300)=0.25; end for i=length(omega)-300+1:1:length(omega); Pi(i,i)=0.5; Pi(i,i-300)=0.25; Pi(i,end)=Pi(i,end)+0.25; end for i=1:1:300 Pi(i,i)=0.5; Pi(i,1)=Pi(i,1)+0.25; Pi(i,i+300)=0.25; end
Call bellman.m
bellman
Calculate the entry and exit thresholds for the second competitor
v2=squeeze(vFuncs(:,:,2)); v2=v2(:,2); if min(v2)<=phi(2); overlineC=omega(find(v2<=phi(2),1,'last')); else overlineC=omega(1); end if min(v2)==0; underlineC=omega(find(v2==0,1,'last')); else underlineC=omega(1); end
Calculate the entry set for the first competitor and its ``hole''
v1=squeeze(vFuncs(:,:,1)); Alow=min(omega(v1(:,1)>=phi(1))); Ahigh=min(omega(v1(:,1)<=phi(1) & omega'>Alow)); Clow=min(omega(v1(:,1)>=phi(1) & omega'>Ahigh)); Chigh=max(omega);
Export v1 and v2 to csv files for LaTeX plotting
v11=[omega(omega<=overlineC); v1(omega<=overlineC,1)']; %Note that fprintf spits out its input in column order. f1=fopen('ac2aNoThresholdV11.csv','w'); fprintf(f1,'C, v11, dummy\n'); fprintf(f1,'%3.3f, %3.3f, 1.0\n',v11); fclose(f1); v12=[omega(omega>underlineC); v1(omega>underlineC,2)']; f1=fopen('ac2aNoThresholdV12.csv','w'); fprintf(f1,'C, v12, dummy\n'); fprintf(f1,'%3.3f, %3.3f, 1.0\n',v12); fclose(f1); v2=[omega; v2']; f1=fopen('ac2aNoThresholdV2.csv','w'); fprintf(f1,'C, v2, dummy\n'); fprintf(f1,'%3.3f, %3.3f, 1.0\n',v2); fclose(f1);
Export other equilibrium calculations to LaTeX macros for use by TikZ when creating Figure 3.
f1=fopen('ac2aNoThresholdConstants.tex','w'); fprintf(f1,'\\def\\ymax{%3.2f}\n',max(v1(:,1))); fprintf(f1,'\\def\\cunderbartwo{%3.2f}\n',underlineC); fprintf(f1,'\\def\\coverbartwo{%3.2f}\n',overlineC); fprintf(f1,'\\def\\phione{%3.2f}\n',phi(1)); fprintf(f1,'\\def\\phitwo{%3.2f}\n',phi(2)); fprintf(f1,'\\def\\chat{%3.2f}\n',min(omega)); fprintf(f1,'\\def\\ccheck{%3.2f}\n',max(omega)); fprintf(f1,'\\def\\Alow{%3.2f}\n',Alow); fprintf(f1,'\\def\\Ahigh{%3.2f}\n',Ahigh); fprintf(f1,'\\def\\Clow{%3.2f}\n',Clow); fprintf(f1,'\\def\\Chigh{%3.2f}\n',Chigh); fclose(f1);